package diedaiqi;

import java.util.ArrayList;
import java.util.Iterator;

/**
 * @Created by pic
 * @Time 2019/9/4 0004
 * @Package cn.ha02.javalearn
 * @Desc
 */
public class MyClass<E> implements Iterable{
    //创建内部list,用于存放元素
    ArrayList<E> objects = null;
    //指针,用于记录当前迭代器的位置,判断是否拥有下一个元素
    int temp = -1;

    //构造器中给成员变量赋值
    public MyClass(){
       objects = new ArrayList<E>();
   }
   //给成员变量list添加元素
   public boolean add(E e){
       boolean add = objects.add(e);
       return add;
   }
   //返回list的长度
   public int size(){
       return objects.size();
   }

   //itertor方法返回一个迭代器对象
    @Override
    public Iterator<E> iterator() {
        //每当调用该方法的时候都将temp参数归为
        temp = -1;
        return new MyClass2();
    }

    //迭代器有两个核心方法,hasNext方法和Next方法
    class MyClass2 implements Iterator<E>{
        int size = -1;
        //判断是否有下一个元素
        @Override
        public boolean hasNext() {
            temp++;
            size = size();
            if(temp>=size){
                return false;
            }else{
                return true;
            }
        }

        //取出下一个元素
        @Override
        public E next() {
            return objects.get(temp);
        }
    }
}


